package com.easyadmin.modules.stock.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.easyadmin.common.web.domain.request.PageDomain;
import com.easyadmin.modules.stock.domain.*;
import com.easyadmin.modules.stock.mapper.*;
import com.easyadmin.modules.stock.service.SysStockServer;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service("sysStockServer")
public class SysStockServerImpl extends ServiceImpl<SysStockDao, SysStockEntity>
        implements SysStockServer {

    @Autowired
    SysStockDao sysStockDao;
    @Autowired
    SysStockPositionRecordDao sysStockPositionRecordDao;
    @Autowired
    SysStockBlacklistDao sysStockBlacklistDao;
    @Autowired
    SysStockProductAgeDao sysStockProductAgeDao;


    @Override
    public PageInfo<SysStockEntity> queryPage(SysStockEntity sysStockEntity, PageDomain pageDomain) {
        PageHelper.startPage(pageDomain.getPage(), pageDomain.getLimit());
        List<SysStockEntity> data =sysStockDao.selectList(new QueryWrapper<SysStockEntity>().lambda()
                .like(StringUtils.isNotBlank(sysStockEntity.getStockName()),
                        SysStockEntity::getStockName,sysStockEntity.getStockName())
                .like(StringUtils.isNotBlank(sysStockEntity.getStockCode()),
                        SysStockEntity::getStockCode,sysStockEntity.getStockCode())
                .orderBy(true,false,SysStockEntity::getCreateTime,SysStockEntity::getStockName));
        return new PageInfo<>(data);
    }

    @Override
    public Boolean remove(String id) {
        sysStockDao.deleteById(Integer.valueOf(id));
        return true;
    }

    @Override
    public boolean update(SysStockEntity sysFuturesEntity) {
        Integer result = sysStockDao.updateById(sysFuturesEntity);
        return result > 0;
    }

    @Override
    public boolean batchRemove(String[] ids) {
        for(String  id:ids){
            sysStockDao.deleteById(id);
        }
        return true;
    }


    @Override
    public boolean synchpos(String id) {
        if(id.contains(",")){
            return false;
        }
        SysStockEntity entity =sysStockDao.selectOne(new QueryWrapper<SysStockEntity>().lambda()
                .eq(SysStockEntity::getId,id));
        if(entity!=null){
            List<SysStockPositionRecordEntity> list= sysStockPositionRecordDao.
                    selectList(new QueryWrapper<SysStockPositionRecordEntity>().lambda()
                    .eq(SysStockPositionRecordEntity::getCode,entity.getStockCode()));
            if(list.size()>0){
                return false;
            }
            SysStockPositionRecordEntity ageEntity=new SysStockPositionRecordEntity();
            ageEntity.setId(entity.getId());
            ageEntity.setName(entity.getStockName());
            ageEntity.setCode(entity.getStockCode());
            ageEntity.setCreateTime(new Date());
            ageEntity.setEffFlag("1");
            sysStockPositionRecordDao.insert(ageEntity);
            return true;
        }
        return false;
    }


    @Override
    public boolean synchblack(String id) {
        if(id.contains(",")){
            return false;
        }
        SysStockEntity entity =sysStockDao.selectOne(new QueryWrapper<SysStockEntity>().lambda()
                .eq(SysStockEntity::getId,id));
        if(entity!=null){
            List<SysStockBlacklistEntity> list= sysStockBlacklistDao.selectList(new QueryWrapper<SysStockBlacklistEntity>().lambda()
                    .eq(SysStockBlacklistEntity::getStockCode,entity.getStockCode()));
            if(list.size()>0){
                return false;
            }
            SysStockBlacklistEntity ageEntity=new SysStockBlacklistEntity();
            ageEntity.setId(entity.getId());
            ageEntity.setStockName(entity.getStockName());
            ageEntity.setStockCode(entity.getStockCode());
            ageEntity.setCreateTime(new Date());
            ageEntity.setEffFlag("1");
            sysStockBlacklistDao.insert(ageEntity);
            return true;
        }
        return false;
    }

    @Override
    public boolean synch(String id) {
        if(id.contains(",")){
            return false;
        }
        SysStockEntity entity =sysStockDao.selectOne(new QueryWrapper<SysStockEntity>().lambda()
                .eq(SysStockEntity::getId,id));
        if(entity!=null){
            List<SysStockProductAgeEntity> list= sysStockProductAgeDao.selectList(new QueryWrapper<SysStockProductAgeEntity>().lambda()
                    .eq(SysStockProductAgeEntity::getStockCode,entity.getStockCode()));
            if(list.size()>0){
                return false;
            }
            SysStockBlacklistEntity ageEntity=new SysStockBlacklistEntity();
            ageEntity.setId(entity.getId());
            ageEntity.setStockName(entity.getStockName());
            ageEntity.setStockCode(entity.getStockCode());
            ageEntity.setCreateTime(new Date());
            ageEntity.setEffFlag("1");
            sysStockBlacklistDao.insert(ageEntity);
            return true;
        }
        return false;
    }

}
